package com.superbytecode.cloud.safety.ratelimit.model;

import lombok.Data;
import lombok.experimental.Accessors;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint;

/**
 * All rights Reserved, Designed By www.super-master.com
 *
 * @ProjectName: beacon-cloud
 * @Package: com.superbytecode.cloud.safety.ratelimit.model
 * @ClassName: RateLimitReq
 * @Description: [限流请求信息]
 * <p> </p>
 * @Author: [Lance Ting]
 * @Date: 2024/11/13 10:52
 * @Version: V1.0
 * @Copyright: 2024 www.super-master.com Inc. All rights reserved.
 * TODO: 注意,本文件Lance Ting所作,如果转载或使用请标明具体出处!
 **/
@Data
@Accessors(chain = true)
public class RateLimitReq {

    /**
     * el表达式
     * <p>
     * 如用户手机号码：“#user.phone”，如有多个参数，自行拼装
     * </p>
     */
    private String spEl;
    /**
     * 限流规则 (必填)
     * <p>
     * 格式为: {m/n[s|m|h]}，其中s|m|h作为时间单位，目前支持： s : 秒, m: 分钟, h: 小时, d: 天
     * 如{"1/10s", "3/1m", "20/1h"}，斜杠前面的数字1表示指定时间内能请求的次数，10s表示10秒钟， "1/10s" 表示10秒周期内只能请求1次
     * 限流规则由1个或多个规则组成，配置多个规则时，只要其中一个规则到达限定值，就会返回错误
     * </p>
     */
    private String[] rules;

    /**
     * 切点对象
     */
    private ProceedingJoinPoint joinPoint;
}